|
Date : 13 mai 1991 Protection : CLEF PHYSIQUE Programme : EXPERTECH V3.0 Outils : CARTE PANO_AT Fichier : XI31.EXE Temps pass� : 1 Heure Soci�t� : EXPERTECH Divers : PERISCOPE charg� � 0A9B:0000 Origine : L.F. Num�ro : 074 PERISCOPE en arr�t sur le port d'imprimante. ( carte PANO ) 379 R Au retour du sous-programme de test de la clef on tombe sur cette routine ( qui est cod�e ) dans laquelle il suffit de forcer le saut en 0786 pour que le soft fonctionne. Plusieurs solutions possibles: 1- transformer le saut JNZ en JZ. 2- mettre des NOP de 776 � 785. 3- placer un JMP 786 en 774. 205C:076F 83C402 ADD SP,+02 205C:0772 0BC0 OR AX,AX 205C:0774 7510 JNZ 0786 � transformer en JZ 0786. 205C:0776 B86600 MOV AX,0066 205C:0779 50 PUSH AX 205C:077A 9A0901B44D CALL 4DB4:0109 205C:077F 83C402 ADD SP,+02 205C:0782 0E PUSH CS 205C:0783 E80100 CALL 0787 205C:0786 CB RETF Je place un BI 21 avec un BM 205C:0774 205C:0774 W pour m'arr�ter d�s que l'on �crit dans la position 0774. Chose curieuse, sans BI 21 le soft se d�roule en full speed. Je m'arr�te � l'adresse DS:0004 qui est bien 205C:0774. Le principe du codage est un XOR de la position N-1 avec la position N par mot de 16 bits, voir ci-dessous: On note dans AX mon 7510 cherch�... AX=1075 BX=C00B CX=5BDF DX=20D3 SP=0080 BP=091C SI=0006 DI=0080 DS=20D3 ES=7CB2 SS=7FA1 CS=7CB2 IP=0042 NV UP EI PL NZ NA PO NC WR DS:0004 = D07E 7CB2:0042 A30400 MOV [0004],AX 7CB2:0042 A30400 MOV [0004],AX 7CB2:0045 8B1E0600 MOV BX,[0006] 7CB2:0049 33D8 XOR BX,AX 7CB2:004B 891E0600 MOV [0006],BX 7CB2:004F A10800 MOV AX,[0008] 7CB2:0052 33C3 XOR AX,BX 7CB2:0054 A30800 MOV [0008],AX 7CB2:0057 8B1E0A00 MOV BX,[000A] 7CB2:005B 33D8 XOR BX,AX 7CB2:005D 891E0A00 MOV [000A],BX 7CB2:0061 A10C00 MOV AX,[000C] Cette routine est en clair dans le fichier XI31.EXE ainsi que la chaine qui une fois XOR� donne mon 7510B86600....: CFC2 7ED0 CD76 B836 9A59 Raisonnons: CFC2 XORer avec X donne 7510 ---> d'ou on d�duit que X est �gal � BAD2; 1100 1111 1100 0010 ---> CFC2 0111 0101 0001 0000 ---> 7510 ------------------- XOR 1011 1010 1101 0010 ---> BAD2 Donc si au lieu de 7510 je veux 7410 il suffit de XORer A avec 4 et cel� donne E. ( d'ou on remplace l'octet CF par CE ) Le probl�me, car il y en a un c'est que l'octet N+1 est fabriqu� � partir de l'octet N. Ce qui signifie que la suite du code est compl�tement fauss�e. Il faut donc rattrapper l'"erreur" en corrigeant une nouvelle fois en aval. CD76 XOR� avec 7510 donnait B866, comme on a maintenant 7410 il faut s'arranger pour que 7410 XOR� avec CD76 donne B866. 4 XOR� avec X doit �tre �gal � 8 ; d'ou X �gal C. Modifier donc l'octet CD en CC. Avec PCTOOLS chercher CFC27ED0CD et modifier CF par CE et CD par CC. CQFD |